home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / !Interfaces / Universal Interfaces 2.0a1 / CIncludes / Resources.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-17  |  8.4 KB  |  247 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Resources.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a1.  ETO #15, MPW prerelease.  Sunday, July 17, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __RESOURCES__
  18. #define __RESOURCES__
  19.  
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifndef __MIXEDMODE__
  27. #include <MixedMode.h>
  28. #endif
  29.  
  30. #ifndef __FILES__
  31. #include <Files.h>
  32. #endif
  33. /*    #include <OSUtils.h>                                        */
  34.  
  35. #ifdef __cplusplus
  36. extern "C" {
  37. #endif
  38.  
  39. #if GENERATINGPOWERPC
  40. #pragma options align=mac68k
  41. #endif
  42.  
  43. #ifdef __CFM68K__
  44. #pragma lib_export on
  45. #endif
  46.  
  47.  
  48. enum {
  49.     resSysHeap                    = 64,                            /*System or application heap?*/
  50.     resPurgeable                = 32,                            /*Purgeable resource?*/
  51.     resLocked                    = 16,                            /*Load it in locked?*/
  52.     resProtected                = 8,                            /*Protected?*/
  53.     resPreload                    = 4,                            /*Load in on OpenResFile?*/
  54.     resChanged                    = 2,                            /*Resource changed?*/
  55.     mapReadOnly                    = 128,                            /*Resource file read-only*/
  56.     mapCompact                    = 64,                            /*Compact resource file*/
  57.     mapChanged                    = 32,                            /*Write map out at update*/
  58.     kResFileNotOpened            = -1,                            /*ref num return as error when opening a resource file*/
  59.     kSystemResFile                = 0                                /*this is the default ref num to the system file*/
  60. };
  61.  
  62. /*
  63.         ResErrProcPtr uses register based parameters on the 68k and cannot
  64.         be written in or called from a high-level language without the help of
  65.         mixed mode or assembly glue.
  66.  
  67.         In:
  68.          => thErr           D0.W
  69. */
  70.  
  71. #if GENERATINGCFM
  72. typedef UniversalProcPtr ResErrUPP;
  73. #else
  74. typedef Register68kProcPtr ResErrUPP;
  75. #endif
  76.  
  77. enum {
  78.     uppResErrProcInfo = kRegisterBased
  79.          | REGISTER_ROUTINE_PARAMETER(1, kRegisterD0, SIZE_CODE(sizeof(OSErr)))
  80. };
  81.  
  82. #if GENERATINGCFM
  83. #define NewResErrProc(userRoutine)        \
  84.         (ResErrUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppResErrProcInfo, GetCurrentArchitecture())
  85. #else
  86. #define NewResErrProc(userRoutine)        \
  87.         ((ResErrUPP) (userRoutine))
  88. #endif
  89.  
  90. #if GENERATINGCFM
  91. #define CallResErrProc(userRoutine, thErr)        \
  92.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppResErrProcInfo, (thErr))
  93. #else
  94. /* (*ResErrProcPtr) cannot be called from a high-level language without the Mixed Mode Manager */
  95. #endif
  96.  
  97. extern pascal short InitResources(void)
  98.  ONEWORDINLINE(0xA995);
  99. extern pascal void RsrcZoneInit(void)
  100.  ONEWORDINLINE(0xA996);
  101. extern pascal void CloseResFile(short refNum)
  102.  ONEWORDINLINE(0xA99A);
  103. extern pascal short ResError(void)
  104.  ONEWORDINLINE(0xA9AF);
  105. extern pascal short CurResFile(void)
  106.  ONEWORDINLINE(0xA994);
  107. extern pascal short HomeResFile(Handle theResource)
  108.  ONEWORDINLINE(0xA9A4);
  109. extern pascal void CreateResFile(ConstStr255Param fileName)
  110.  ONEWORDINLINE(0xA9B1);
  111. extern pascal short OpenResFile(ConstStr255Param fileName)
  112.  ONEWORDINLINE(0xA997);
  113. extern pascal void UseResFile(short refNum)
  114.  ONEWORDINLINE(0xA998);
  115. extern pascal short CountTypes(void)
  116.  ONEWORDINLINE(0xA99E);
  117. extern pascal short Count1Types(void)
  118.  ONEWORDINLINE(0xA81C);
  119. extern pascal void GetIndType(ResType *theType, short index)
  120.  ONEWORDINLINE(0xA99F);
  121. extern pascal void Get1IndType(ResType *theType, short index)
  122.  ONEWORDINLINE(0xA80F);
  123. extern pascal void SetResLoad(Boolean load)
  124.  ONEWORDINLINE(0xA99B);
  125. extern pascal short CountResources(ResType theType)
  126.  ONEWORDINLINE(0xA99C);
  127. extern pascal short Count1Resources(ResType theType)
  128.  ONEWORDINLINE(0xA80D);
  129. extern pascal Handle GetIndResource(ResType theType, short index)
  130.  ONEWORDINLINE(0xA99D);
  131. extern pascal Handle Get1IndResource(ResType theType, short index)
  132.  ONEWORDINLINE(0xA80E);
  133. extern pascal Handle GetResource(ResType theType, short theID)
  134.  ONEWORDINLINE(0xA9A0);
  135. extern pascal Handle Get1Resource(ResType theType, short theID)
  136.  ONEWORDINLINE(0xA81F);
  137. extern pascal Handle GetNamedResource(ResType theType, ConstStr255Param name)
  138.  ONEWORDINLINE(0xA9A1);
  139. extern pascal Handle Get1NamedResource(ResType theType, ConstStr255Param name)
  140.  ONEWORDINLINE(0xA820);
  141. extern pascal void LoadResource(Handle theResource)
  142.  ONEWORDINLINE(0xA9A2);
  143. extern pascal void ReleaseResource(Handle theResource)
  144.  ONEWORDINLINE(0xA9A3);
  145. extern pascal void DetachResource(Handle theResource)
  146.  ONEWORDINLINE(0xA992);
  147. extern pascal short UniqueID(ResType theType)
  148.  ONEWORDINLINE(0xA9C1);
  149. extern pascal short Unique1ID(ResType theType)
  150.  ONEWORDINLINE(0xA810);
  151. extern pascal short GetResAttrs(Handle theResource)
  152.  ONEWORDINLINE(0xA9A6);
  153. extern pascal void GetResInfo(Handle theResource, short *theID, ResType *theType, Str255 name)
  154.  ONEWORDINLINE(0xA9A8);
  155. extern pascal void SetResInfo(Handle theResource, short theID, ConstStr255Param name)
  156.  ONEWORDINLINE(0xA9A9);
  157. extern pascal void AddResource(Handle theData, ResType theType, short theID, ConstStr255Param name)
  158.  ONEWORDINLINE(0xA9AB);
  159. extern pascal long GetResourceSizeOnDisk(Handle theResource)
  160.  ONEWORDINLINE(0xA9A5);
  161. extern pascal long GetMaxResourceSize(Handle theResource)
  162.  ONEWORDINLINE(0xA821);
  163. extern pascal long RsrcMapEntry(Handle theResource)
  164.  ONEWORDINLINE(0xA9C5);
  165. extern pascal void SetResAttrs(Handle theResource, short attrs)
  166.  ONEWORDINLINE(0xA9A7);
  167. extern pascal void ChangedResource(Handle theResource)
  168.  ONEWORDINLINE(0xA9AA);
  169. extern pascal void RemoveResource(Handle theResource)
  170.  ONEWORDINLINE(0xA9AD);
  171. extern pascal void UpdateResFile(short refNum)
  172.  ONEWORDINLINE(0xA999);
  173. extern pascal void WriteResource(Handle theResource)
  174.  ONEWORDINLINE(0xA9B0);
  175. extern pascal void SetResPurge(Boolean install)
  176.  ONEWORDINLINE(0xA993);
  177. extern pascal short GetResFileAttrs(short refNum)
  178.  ONEWORDINLINE(0xA9F6);
  179. extern pascal void SetResFileAttrs(short refNum, short attrs)
  180.  ONEWORDINLINE(0xA9F7);
  181. extern pascal short OpenRFPerm(ConstStr255Param fileName, short vRefNum, SInt8 permission)
  182.  ONEWORDINLINE(0xA9C4);
  183. extern pascal Handle RGetResource(ResType theType, short theID)
  184.  ONEWORDINLINE(0xA80C);
  185. #if SystemSevenOrLater
  186. extern pascal short HOpenResFile(short vRefNum, long dirID, ConstStr255Param fileName, SInt8 permission)
  187.  ONEWORDINLINE(0xA81A);
  188. #else
  189. extern pascal short HOpenResFile(short vRefNum, long dirID, ConstStr255Param fileName, SInt8 permission);
  190. #endif
  191. #if SystemSevenOrLater
  192. extern pascal void HCreateResFile(short vRefNum, long dirID, ConstStr255Param fileName)
  193.  ONEWORDINLINE(0xA81B);
  194. #else
  195. extern pascal void HCreateResFile(short vRefNum, long dirID, ConstStr255Param fileName);
  196. #endif
  197. extern pascal short FSpOpenResFile(const FSSpec *spec, SignedByte permission)
  198.  TWOWORDINLINE(0x700D, 0xAA52);
  199. extern pascal void FSpCreateResFile(const FSSpec *spec, OSType creator, OSType fileType, ScriptCode scriptTag)
  200.  TWOWORDINLINE(0x700E, 0xAA52);
  201. /*  partial resource calls  */
  202. extern pascal void ReadPartialResource(Handle theResource, long offset, void *buffer, long count)
  203.  TWOWORDINLINE(0x7001, 0xA822);
  204. extern pascal void WritePartialResource(Handle theResource, long offset, const void *buffer, long count)
  205.  TWOWORDINLINE(0x7002, 0xA822);
  206. extern pascal void SetResourceSize(Handle theResource, long newSize)
  207.  TWOWORDINLINE(0x7003, 0xA822);
  208. extern pascal Handle GetNextFOND(Handle fondHandle)
  209.  TWOWORDINLINE(0x700A, 0xA822);
  210. /* Use TempInsertROMMap to force the ROM resource map to be
  211.    inserted into the chain in front of the system. Note that
  212.    this call is only temporary - the modified resource chain
  213.    is only used for the next call to the resource manager.
  214.    See IM IV 19 for more information. */
  215. extern pascal void TempInsertROMMap(Boolean tempResLoad);
  216. #if CGLUESUPPORTED
  217. extern Handle getnamedresource(ResType theType, const char *name);
  218. extern Handle get1namedresource(ResType theType, const char *name);
  219. extern short openrfperm(const char *fileName, short vRefNum, char permission);
  220. extern short openresfile(const char *fileName);
  221. extern void createresfile(const char *fileName);
  222. extern void getresinfo(Handle theResource, short *theID, ResType *theType, char *name);
  223. extern void setresinfo(Handle theResource, short theID, const char *name);
  224. extern void addresource(Handle theResource, ResType theType, short theID, const char *name);
  225. #endif
  226. #if OLDROUTINENAMES
  227. #if CGLUESUPPORTED
  228. #define SizeResource(theResource) GetResourceSizeOnDisk(theResource)
  229. #define MaxSizeRsrc(theResource) GetMaxResourceSize(theResource)
  230. #define RmveResource(theResource) RemoveResource(theResource)
  231. #endif
  232. #endif
  233.  
  234. #ifdef __CFM68K__
  235. #pragma lib_export off
  236. #endif
  237.  
  238. #if GENERATINGPOWERPC
  239. #pragma options align=reset
  240. #endif
  241.  
  242. #ifdef __cplusplus
  243. }
  244. #endif
  245.  
  246. #endif /* __RESOURCES__ */
  247.